# The max distance between to link to be called "neighbors"
FISHEYE_MAX_LINK_DISTANCE = -1

# The power of the cell of each node
FISHEYE_NODE_CELL_POWER = -1

# The max capacity (the number of fragments) each message queue can hold
FISHEYE_MESSAGE_QUEUE_CAPACITY = -1

# Constants used when calculating the power needed to trasnfer one fragment of a packet
FISHEYE_FRAGMENT_TRANSFER_NEEDED_POWER_C = 2
FISHEYE_FRAGMENT_TRANSFER_NEEDED_POWER_K = 0.001

# The size (as in the number of fragments) of a RouteUpdatePacket
FISHEYE_ROUTE_UPDATE_PACKET_SIZE = 1

# A constant used to denote that there is no link (the weight is infinite - MAX_UNIT_32)
FISHEYE_INFINITE_DISTANCE = 4294967295

# The amount of fragments a link can carry in a single step
FISHEYE_LINK_FRGAMENTS_CAPACITY_PER_STEP  = 5

# The map which defines the scopes.
# Each key denotes a scope. For example, for this map: {1:1, 2:3, 3:5, FISHEYE_INFINITE_DISTANCE: 20},
# the first scope contains the nodes which are the immediate neighbors of the current node,
# the second scope contains those who are 2 hops from the current scope and so on.
# The value is the interval for which a topology map entry will be sent for nodes which are
# contained in that scope.


# infinte is all the other nodes that are not in the first 3 scopes. ("hops")
# If there is an update packet - send it to the immidiate nodes. for other nodes we need to chcek the distance table - if it is in distance 3  - then every 5 updates we will send the update packets.
# If for instance we'd have 1.5 distance (though there is no such thing ) it will be considederd as distance 2.
FISHEYE_SCOPES_AND_INTERVALS = {1:1, 2:2, 3:3, FISHEYE_INFINITE_DISTANCE: 4}
